
import BackendjsFunctions from '@/core/BackendjsFunctions.js'
import { backendjsFunctions } from '@/core/functions.js'
import _ from 'lodash'

export default {
  /**
   * 组件的拖拽移动
   * @param {*} componentType 组件的类型，不能是表单组件
   * @param {*} config  拖拽的参数，详见 dragDefaultConf() 获取的参数说明
   * @returns
   */
  dragComponentRun (componentType, config) {
    componentType = parseInt(componentType)
    if (!_.isNumber(componentType)) {
      console.error('参数 componentType 非数字！')
      return
    }
    BackendjsFunctions._verification('dragComponentRun')
    try {
      return backendjsFunctions().dragComponentRun(componentType, config)
    } catch (error) {
      console.error(error)
    }
    return null
  },

  /**
   * 表单的拖拽移动
   * @param {*} formId  表单的数据ID
   * @param {*} config  拖拽的参数，详见 dragDefaultConf() 获取的参数说明
   * @returns
   */
  dragFormRun (formId, config) {
    formId = parseInt(formId)
    if (!_.isNumber(formId)) {
      console.error('参数 formId 非数字！')
      return
    }
    BackendjsFunctions._verification('dragFormRun')
    try {
      return backendjsFunctions().dragFormRun(formId, config)
    } catch (error) {
      console.error(error)
    }
    return null
  },

  /**
   * 公共组件的拖拽移动，通过  BackendjsFunctions.getCommonComponentList() 获取到所有的公共组件，然后通过参数 tmpId 选择拖拽的公共组件对象
   * @param {*} tmpId   公共组件临时ID
   * @param {*} config  拖拽的参数，详见 dragDefaultConf() 获取的参数说明
   * @returns
   */
  dragCommonComponentRun (tmpId, config) {
    BackendjsFunctions._verification('dragCommonComponentRun')
    try {
      return backendjsFunctions().dragCommonComponentRun(tmpId, config)
    } catch (error) {
      console.error(error)
    }
    return null
  },

  /**
   * 获取拖拽配置参数，参数说明如下：
   * dragDivCss: JSON 的方式拖拽外层的样式配置，不用修改。
   * dragDivInnerCss: JSOn 的方式拖拽内层的样式配置
   * dragDivInnerHtml: 拖拽内层的html配置，可使用 img 显示拖拽的组件
   * dragOffset: 上下左右的识别偏移，如果组件宽高大小小于 dragOffset * 3，则会按照比例识别偏移，不用修改。
   * topHeight: 顶部非 iframe 层的高度，用于拖拽过程中识别鼠标当前的元素节点，不用修改。
   */
  dragDefaultConf () {
    BackendjsFunctions._verification('dragDefaultConf')
    try {
      return backendjsFunctions().dragDefaultConf()
    } catch (error) {
      console.error(error)
    }
    return null
  },

  /**
   * 撤销渲拖拽渲染层，释放数据内存
   */
  dragDone () {
    BackendjsFunctions._verification('dragDone')
    try {
      return backendjsFunctions().dragDone()
    } catch (error) {
      console.error(error)
    }
    return null
  }
}
